package com.todo.content.application.service;

import com.todo.common.common.entity.response.page.PageResult;
import com.todo.common.common.enums.EnableTypeEnum;
import com.todo.content.application.entity.bo.ContentTopicBO;
import com.todo.content.application.entity.bo.ContentTopicCountBO;
import com.todo.content.application.entity.condition.ContentTopicConditionBO;

import java.util.List;

/**
 * (ContentTopic)表服务接口
 *
 * @author zhangwenxiang
 * @since 2024-03-04 00:19:46
 */
public interface ContentTopicService {

    /**
     * 新增内容话题内容
     *
     * @param contentTopicBO
     * @return
     */
    Boolean insertContentTopic(ContentTopicBO contentTopicBO);

    /**
     * 根据主键更新话题内容
     *
     * @param contentTopicBO
     * @return
     */
    Boolean updateContentTopic(ContentTopicBO contentTopicBO);


    /**
     * 根据主键id洒汗出话题信息
     *
     * @param topicId
     * @return
     */
    Boolean removeContentTopicById(Long topicId);

    /**
     * 根据主键id查询话题信息
     *
     * @param id
     * @return
     */
    ContentTopicBO queryContentTopicById(Long id);

    /**
     * 根据话题名称查询话题信息
     *
     * @param name
     * @return
     */
    ContentTopicBO queryContentTopicByName(String name);

    /**
     * 根据话题名称搜索话题信息列表
     *
     * @param keyword
     * @return
     */
    List<ContentTopicBO> searchContentTopicByName(String keyword);

    /**
     * 多条件查询话题信息列表
     *
     * @param topicConditionBO
     * @return
     */
    PageResult<ContentTopicBO> queryContentTopicListByCondition(ContentTopicConditionBO topicConditionBO);

    /**
     * 根据话题id列表查询话题信息列表
     *
     * @param topicIdList
     * @return
     */
    List<ContentTopicBO> queryContentTopicByIdList(List<Long> topicIdList);

    /**
     * 根据话题id启用/禁用话题
     *
     * @param topicId
     * @param enable
     * @return
     */
    Boolean enableContentTopicById(Long topicId, EnableTypeEnum enable);

    /**
     * 更新话题数量
     *
     * @param topicCountBO
     * @return
     */
    Boolean updateContentTopicCount(ContentTopicCountBO topicCountBO);
}
